100 REM DISK READER 180 CLOSE4:CLOSE1:CLOSE15:OK=0:CLR 190 PRINTCHR$(147):FORI=1TO10:PRINTCHR$(17);CHR$(32);:NEXT 200 PRINT"JUST A MOMENT PLEASE":GOSUB2490:T$=CHR$(147)+CHR$(13)+CHR$(13) 210 FORI=1TO13:T$=T$+CHR$(32):NEXT:FORI=1TO14:T$=T$+CHR$(45):NEXT 220 FORI=1TO12:T$=T$+CHR$(157):NEXT:T$=T$+"DISKREADER":FORI=1TO12 230 T$=T$+CHR$(157):NEXT:FORI=1TO14:T$=T$+CHR$(45):NEXT:T$=T$+CHR$(13) 240 GOSUB1760:IFDE<>5THENGOSUB1220 250 ONDEGOTO1920,1300,310,1570,2430 270 GET#1,A$:L=L+1:IFL=65535THENL=0 280 IFST<>0THEN2280 290 D=ASC(A$+CHR$(0)):RETURN 310 GOSUB2340:PRINTT$:PRINT:PRINT 320 IFOKTHENPRINT#4,NF$:PRINT#4:PRINT#4 330 PRINT" START ADDRESS: $"; 340 IFOKTHENPRINT#4,"START ADDRESS: $"; 350 GOSUB270:L1=D:GOSUB270:L2=D 360 L=L1+L2*256:D=L:GOSUB440:PRINTH$:PRINT:PRINT 370 IFOKTHENPRINT#4,H$:PRINT#4:PRINT#4 380 GOSUB270:OP=D 390 GOSUB440:A$=H$:GOSUB560 400 IFPEEK(653)THEN400 410 IFPEEK(197)=13THEN2280 420 GOTO380 440 H$="" 450 IFDTHENA=INT(D/16) 460 H$=MID$("0123456789ABCDEF",1+D-A*16,1)+H$ 470 D=A:IFDGOTO450 480 IFLEN(H$)<2THENH$=RIGHT$("00"+H$,2) 490 IFLEN(H$)=3THENH$=RIGHT$("0000"+H$,4) 500 RETURN 520 D=0:IFH$>""THENFORH=1TOLEN(H$) 530 A=ASC(MID$(H$,H,1))-48 540 D=D*16+A+(A>9)*7:NEXT:RETURN 560 GOSUB640 570 PRINTXX$:IFOKTHENPRINT#4,XX$ 580 IFOT$="BRK"OROT$="RTS"THEN610 590 IFLEFT$(OT$,3)="JMP"THEN610 600 RETURN 610 PRINTDI$:IFOKTHENPRINT#4,DI$ 620 RETURN 640 D=L-1:GOSUB440:OX$=H$ 650 IFLEN(OX$)<4THENOX$=RIGHT$("0000"+OX$,4) 660 OX$="."+OX$:XX$=OX$+CHR$(32)+A$+CHR$(32) 670 OT$=LEFT$(R$(OP),3) 680 U$=RIGHT$(R$(OP),1) 690 IFU$="*"THENGOSUB760:RETURN 700 IFU$="?"THENGOSUB760:GOTO730 710 ONASC(U$)-64GOSUB780,840,890,910,940,970,1020,1070,1100,1130,1190 720 H1$="":H2$="":RETURN 730 IF(OP<32)OR(OP>127ANDOP<160)OR(OP=34)THENRETURN 740 XX$=XX$+CHR$(32)+CHR$(39)+CHR$(18)+CHR$(OP)+CHR$(146):RETURN 760 XX$=XX$+LEFT$(SP$,15)+OT$:RETURN 780 OT$=OT$+CHR$(32)+CHR$(36) 790 GOSUB270:GOSUB440:H1$=H$ 800 GOSUB270:GOSUB440:H2$=H$ 810 XX$=XX$+H1$+CHR$(32)+H2$+LEFT$(SP$,10)+OT$+H2$+H1$ 820 RETURN 840 OT$=OT$+CHR$(32)+CHR$(35)+CHR$(36) 850 GOSUB270:GOSUB440:H1$=H$ 860 XX$=XX$+H1$+LEFT$(SP$,13)+OT$+H1$ 870 RETURN 890 OT$=OT$+CHR$(32)+CHR$(36):GOTO850 910 OT$=OT$+CHR$(32)+CHR$(36):GOSUB790 920 XX$=XX$+CHR$(44)+CHR$(88):RETURN 940 OT$=OT$+CHR$(32)+CHR$(36):GOSUB790 950 XX$=XX$+CHR$(44)+CHR$(89):RETURN 970 OT$=OT$+CHR$(32)+CHR$(40)+CHR$(36) 980 GOSUB850 990 XX$=XX$+CHR$(44)+CHR$(88)+CHR$(41) 1000 RETURN 1020 OT$=OT$+CHR$(32)+CHR$(40)+CHR$(36) 1030 GOSUB850 1040 XX$=XX$+CHR$(41)+CHR$(44)+CHR$(89) 1050 RETURN 1070 OT$=OT$+CHR$(32)+CHR$(36):GOSUB850 1080 XX$=XX$+CHR$(44)+CHR$(88):RETURN 1100 OT$=OT$+CHR$(32)+CHR$(36):GOSUB850 1110 XX$=XX$+CHR$(44)+CHR$(89):RETURN 1130 OT$=OT$+CHR$(32)+CHR$(36) 1140 GOSUB270:OX=D:GOSUB440:H1$=H$ 1150 OX=OX+(OX>127)*256:D=OX+L:GOSUB440:OX$=H$ 1160 XX$=XX$+H1$+LEFT$(SP$,13)+OT$+OX$ 1170 RETURN 1190 OT$=OT$+CHR$(32)+CHR$(40)+CHR$(36) 1200 GOSUB790:XX$=XX$+CHR$(41):RETURN 1220 PRINTT$:PRINT:PRINT 1230 PRINT" OUTPUT TO SCREEN "; 1240 PRINT"OR TO PRINTER (S/P)?":PRINT 1250 GETA$:IFA$<>"S"ANDA$<>"P"THEN1250 1260 OK=0:IFA$="P"THENOK=1 1270 IFA$="P"THENOPEN4,4:PRINT#4 1280 RETURN 1300 GOSUB2340:PRINTT$:PRINT:PRINT 1310 IFOKTHENPRINT#4,CHR$(14);NF$:PRINT#4:PRINT#4,CHR$(15) 1320 PRINT" START ADDRESS: $"; 1330 GOSUB270:L1=D:GOSUB270:L2=D 1340 L=L1+L2*256:D=L:GOSUB440:PRINTH$:PRINT:PRINT 1350 GOSUB270:GOSUB270 1360 IFD=0THENPRINT:PRINT"E.O.F.":GOTO2280 1370 GOSUB270:N1=D:GOSUB270:N2=D 1380 N=N1+N2*256:PRINTN;:IFOKTHENPRINT#4,N; 1390 GOSUB270 1400 IFPEEK(653)THEN1400 1410 IFPEEK(197)=13THEN2280 1420 IFD=0ANDOKTHENPRINT#4 1430 IFD=0THENPRINT:GOTO1350 1440 IF(PEEK(212)<>0ORD<128)ANDOKTHENPRINT#4,CHR$(D); 1450 IF(PEEK(212)<>0ORD<128)THENPRINTCHR$(D);:GOTO1470 1460 PRINTBA$(D-128);:IFOKTHENPRINT#4,BA$(D-128); 1470 IFOKAND(D=58ORD=44)ANDPEEK(211)>65THEN1520 1480 IFOK=0AND(D=58ORD=44)ANDPEEK(211)>36THEN1520 1490 IFOKANDPEEK(211)>75THEN1520 1500 IFOK=0ANDPEEK(211)>38THEN1520 1510 GOTO1390 1520 Z%=PEEK(212):PRINT:IFOKTHENPRINT#4 1530 TP$=LEFT$(SP$,LEN(STR$(N))+1):POKE212,Z% 1540 PRINTTP$;:IFOKTHENPRINT#4,TP$; 1550 GOTO1390 1570 GOSUB2340:PRINTT$:PRINT:PRINT 1580 IFOKTHENPRINT#4,CHR$(14);NF$ 1590 IFOKTHENPRINT#4,CHR$(15):PRINT#4 1600 IFOKTHENPRINT#4:CLOSE4:OK=0 1610 IFOKTHENOPEN4,4,7 1620 NC%=0 1630 GOSUB270:IFOKTHENNC%=NC%+1 1640 IFOKANDNC%>65THENNC%=0:PRINT#4 1650 IFPEEK(653)THEN1650 1660 IFPEEK(197)=13THEN2280 1670 IFOKANDD=34THENPRINT#4,CHR$(39); 1680 IFD=34THENPRINTCHR$(39);:GOTO1630 1690 IFOKANDD=13THENPRINT#4 1700 IFD=13THENPRINT:GOTO1630 1710 IFOKAND((D>31ANDD<128)ORD>159)THENPRINT#4,CHR$(D); 1720 IF((D>31ANDD<128)ORD>159)THENPRINTCHR$(D);:GOTO1630 1730 PRINTCHR$(32);:IFOKTHENPRINT#4,CHR$(32); 1740 GOTO1630 1760 PRINTT$:PRINT:PRINT 1770 PRINTTAB(3);"(1) READ DIRECTORY":PRINT 1780 PRINTTAB(3);"(2) READ BASIC PROGRAM":PRINT 1790 PRINTTAB(3);"(3) READ & DISASSEMBLE MACHINE CODE":PRINT 1800 PRINTTAB(3);"(4) READ & DISPLAY FILE":PRINT 1810 PRINTTAB(3);"(5) END " 1820 PRINT:PRINT:PRINTTAB(13)"SELECT 1-5 "; 1830 FORI=1TO15:GETA$:PRINTCHR$(157);CHR$(191); 1840 IFA$<>""THEN1890 1850 NEXT:FORI=1TO15:GETA$ 1860 PRINTCHR$(157);CHR$(18);CHR$(191);CHR$(146); 1870 IFA$<>""THEN1890 1880 NEXT:GOTO1830 1890 IFA$<"1"ORA$>"5"THEN1830 1900 DE=VAL(A$):RETURN 1920 PRINTT$:PRINT:PRINT" DISK NAME:"; 1930 IFOKTHENPRINT#4,"DISK NAME:"; 1940 CLOSE1:CLOSE15:FL=0:L$="":B$="" 1950 OPEN1,8,0,"$":OPEN15,8,15 1960 INPUT#15,E1,E1$ 1970 IFE1THENPRINT:PRINT" DISK ERROR: "E1;E1$:GOTO2280 1980 FORI=1TO33:GET#1,A$ 1990 L$=L$+A$:NEXT:CLOSE1:PRINTL$:PRINT:PRINT:IFOKTHENPRINT#4,L$:PRINT#4 2000 PRINTCHR$(18);" BLOCKS FILE NAME FILE TYPE" 2010 IFOKTHENPRINT#4,"BLOCKS FILE NAME FILE TYPE":PRINT#4 2020 IFOKTHENPRINT#4,DI$:PRINT#4 2030 OPEN1,8,0,"$" 2040 GET#1,A$:GET#1,A$:GOSUB2120 2050 GOSUB2120:IFFL=1THENCLOSE1:CLOSE15:GOTO2280 2060 PRINTRIGHT$(SP$+STR$(L),4);LEFT$(SP$,5); 2070 IFOKTHENPRINT#4,RIGHT$(SP$+STR$(L),4);LEFT$(SP$,5); 2080 PRINTLEFT$(B$+SP$,23);FT$ 2090 IFOKTHENPRINT#4,LEFT$(B$+SP$,18);FT$ 2100 GOTO2050 2120 B$="":GET#1,A$:GET#1,A$ 2130 GET#1,A$:L=ASC(A$+CHR$(0)) 2140 GET#1,A$:L=L+ASC(A$+CHR$(0))*256 2150 GET#1,A$:INPUT#15,E1,E1$:IFE1THENPRINT:PRINT" DISK ERROR: "E1;E1$:GOTO2280 2160 IFA$=""THENFL=1:RETURN 2170 IFA$<>CHR$(34)THEN2150 2180 GET#1,A$ 2190 IFPEEK(653)THEN2190 2200 IFA$=CHR$(34)THEN2220 2210 B$=B$+A$:GOTO2180 2220 GET#1,A$:IFA$=CHR$(32)THEN2220 2230 FT$=A$ 2240 GET#1,A$:FT$=FT$+A$:GET#1,A$:FT$=FT$+A$ 2250 GET#1,A$:IFA$<>""THEN2250 2260 RETURN 2280 IFOKTHENPRINT#4 2290 CLOSE1:CLOSE4:CLOSE15:OK=0 2300 PRINT"":PRINTLEFT$(SP$,13);CHR$(18);"HIT ANY KEY" 2310 POKE198,0:WAIT198,1:POKE198,0 2320 GOTO240 2340 PRINTT$:PRINT:PRINT 2350 INPUT" NAME OF FILE : ";NF$:PRINT 2360 INPUT" FILE TYPE (PRG/SEQ/USR) : ";TF$:PRINT" LOOKING FOR: ";NF$;",";TF$ 2370 OPEN15,8,15,"I0" 2380 OPEN1,8,5,"0:"+NF$+","+LEFT$(TF$,1)+",R" 2390 INPUT#15,E1,E1$,E2,E3 2400 IFE1THENPRINT:PRINT" DISK ERROR: "E1;E1$:GOTO2280 2410 RETURN 2430 IFOKTHENPRINT#4 2440 CLOSE4:CLOSE1:CLOSE15:OK=0 2450 PRINTT$:FORI=1TO10:PRINTCHR$(17);CHR$(29);:NEXT 2460 PRINT" END OF PROGRAM !!" 2470 END 2490 DIMBA$(76):FORI=0TO75 2500 READBA$(I):NEXT 2510 DATA"END ","FOR ","NEXT " 2520 DATA"DATA ","INPUT#","INPUT ","DIM "," READ ","LET " 2530 DATA"GOTO ","RUN","IF ","RESTORE ","GOSUB ","RETURN" 2540 DATA"REM","STOP","ON ","WAIT ","LOAD ","SAVE " 2550 DATA"VERIFY ","DEF ","POKE ","PRINT#","PRINT","CONT" 2560 DATA"LIST","CLR","CMD ","SYS ","OPEN ","CLOSE ","GET " 2570 DATA"NEW","TAB("," TO ","FN ","SPC("," THEN " 2580 DATA"NOT"," STEP "," + "," - "," * "," / "," ^ "," AND "," OR " 2590 DATA"> ","=","<","SGN"," INT"," ABS","USR","FRE" 2600 DATA"POS","SQR","RND","LOG","EXP","COS","SIN" 2610 DATA"TAN","ATN","PEEK","LEN","STR$","VAL" 2620 DATA"ASC","CHR$","LEFT$","RIGHT$","MID$","GO" 2630 DATA*** 2640 READBA$:IFBA$<>"***"THENPRINT"ERROR IN BASIC DATA":STOP 2650 REMASSEMBLYOP-CODEDATA 2660 DATABRK*,ORAF,?,?,?,ORAC,ASLC,? 2670 DATAPHP*,ORAB,ASL*,?,?,ORAA,ASLA,? 2680 DATABPLJ,ORAG,?,?,?,ORAH,ASLH,? 2690 DATACLC*,ORAE,?,?,?,ORAD,ASLD,? 2700 DATAJSRA,ANDF,?,?,BITC,ANDC,ROLC,? 2710 DATAPLP*,ANDB,ROL*,?,BITA,ANDA,ROLA,? 2720 DATABMIJ,ANDG,?,?,?,ANDH,ROLH,? 2730 DATASEC*,ANDE,?,?,?,ANDD,ROLD,? 2740 DATARTI*,EORF,?,?,?,EORC,LSRC,? 2750 DATAPHA*,EORB,LSR*,?,JMPA,EORA,LSRA,? 2760 DATABVCJ,EORG,?,?,?,EORH,LSRH,? 2770 DATACLI*,EORE,?,?,?,EORD,LSRD,? 2780 DATARTS*,ADCF,?,?,?,ADCC,RORC,? 2790 DATAPLA*,ADCB,ROR*,?,JMPK,ADCA,RORA,? 2800 DATABVSJ,ADCG,?,?,?,ADCH,RORH,? 2810 DATASEI*,ADCE,?,?,?,ADCD,RORD,? 2820 DATA?,STAF,?,?,STYC,STAC,STXC,? 2830 DATADEY*,?,TXA*,?,STYA,STAA,STXA,? 2840 DATABCCJ,STAG,?,?,STYH,STAH,STXI,? 2850 DATATYA*,STAE,TXS*,?,?,STAD,?,? 2860 DATALDYB,LDAF,LDXB,?,LDYC,LDAC,LDXC,? 2870 DATATAY*,LDAB,TAX*,?,LDYA,LDAA,LDXA,? 2880 DATABCSJ,LDAG,?,?,LDYH,LDAH,LDXI,? 2890 DATACLV*,LDAE,TSX*,?,LDYD,LDAD,LDXE,? 2900 DATACPYB,CMPF,?,?,CPYC,CMPC,DECC,? 2910 DATAINY*,CMPB,DEX*,?,CPYA,CMPA,DECA,? 2920 DATABNEJ,CMPG,?,?,?,CMPH,DECH,? 2930 DATACLD*,CMPE,?,?,?,CMPD,DECD,? 2940 DATACPXB,SBCF,?,?,CPXC,SBCC,INCC,? 2950 DATAINX*,SBCB,NOP*,?,CPXA,SBCA,INCA,? 2960 DATABEQJ,SBCG,?,?,?,SBCI,INCI,? 2970 DATASED*,SBCE,?,?,?,SBCD,INCD,? 2980 DATA* 2990 DIMR$(255),RT$(255) 3000 FORT=0TO255:READR$(T):NEXTT 3010 READR$:IFR$<>"*"THENPRINT"ERROR IN OPCODE DATA":END 3020 SP$="":DI$="":FORI=1TO39 3030 SP$=SP$+CHR$(32):DI$=DI$+CHR$(45):NEXT 3040 RETURN